/**
在TypeScript中，命名空间（Namespace）是一种组织代码的方式，它允许开发者将相关的代码组织在一起，以避免命名冲突。命名空间主要用于将代码分组，并提供一种模块化的结构，便于管理和维护。
  1. 基本概念
  - 命名空间是一种封装代码的机制，可以将相关的变量、函数、接口和类组织在一起。命名空间可以帮助避免全局命名冲突。

  2. 定义命名空间
  - 使用  `namespace`  关键字定义命名空间。可以在命名空间内部定义各种类型的成员（变量、函数、类等）。

    例如：
  namespace MyNamespace {
        export const name = "TypeScript";
        
        export function greet() {
            console.log(`Hello, ${name}!`);
        }
    }

    MyNamespace.greet(); // 输出: Hello, TypeScript!
  3. 导出成员
  - 使用  `export`  关键字导出命名空间的成员，以便在命名空间外部访问。如果不使用  `export` ，则该成员只能在命名空间内部访问。

  4. 嵌套命名空间
  - 命名空间可以嵌套定义，以进一步组织代码。

    例如：
  namespace OuterNamespace {
        export namespace InnerNamespace {
            export const value = 42;
        }
    }

    console.log(OuterNamespace.InnerNamespace.value); // 输出: 42
  5. 使用命名空间
  - 在使用命名空间时，可以通过命名空间的名称来访问其成员。命名空间的成员可以通过点（ `.` ）操作符访问。

  6. 合并命名空间
  - TypeScript支持命名空间的合并，即可以在不同的文件中定义同名的命名空间，TypeScript会将它们合并为一个命名空间。

    例如：
  namespace MyNamespace {
        export const age = 30;
    }

    namespace MyNamespace {
        export function getAge() {
            return age;
        }
    }

    console.log(MyNamespace.getAge()); // 输出: 30
  7. 总结
  命名空间是TypeScript中一个重要的特性，它提供了一种组织和管理代码的方式，帮助开发者避免命名冲突和提高代码的可维护性。通过使用命名空间，开发者可以将相关的功能组织在一起，使得代码结构更加清晰和模块化。尽管在现代TypeScript中，随着ES模块的普及，命名空间的使用逐渐减少，但它仍然是一个有用的工具，特别是在处理大型项目时。
 */
// namespace: 命名空间
export namespace price {
  export function format(price: string) {
    return `¥${price}`
  }

  export const name = 'price'
}

// namespace: 命名空间
export namespace date {
  export function format(dataString) {
    return "2022-10-11"
  }

  const name = "date"
}